﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ClasesLibreria.dao;
using ClasesLibreria;
using ClasesLibreria.dominio;
using System.Configuration;

public partial class ABMEmpleados : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        if (!Page.IsPostBack)
        {
            Session["OrdenGrilla"] = "Legajo ASC";
            gvEmpleados.AllowSorting = true;
            // Llenado de la tabla con datos
            gvEmpleados.DataSource = DAOEmpleado.queryEmpleados(Database.connectionString(), "", "",
            Session["OrdenGrilla"].ToString());
            gvEmpleados.DataBind();
            gvEmpleados.BorderWidth = 1;

            // Llenado de la lista de tipos de documentos
            lstTipoDocumento.DataSource = DAOTipoDocumento.queryTiposDocumentos(Database.connectionString());
            lstTipoDocumento.DataTextField = "nombre";
            lstTipoDocumento.DataValueField = "idTipoDocumento";
            lstTipoDocumento.DataBind();

            lstCargos.DataSource = DAOCargo.queryCargos(Database.connectionString());
            lstCargos.DataTextField = "nombre";
            lstCargos.DataValueField = "idCargo";
            lstCargos.DataBind();
        }
    }

    private void limpiarCargaEmpleado()
    {
        txtLegajo.Text = null;
        txtApellido.Text = null;
        txtNombre.Text = null;
        txtNumeroDocumento.Text = null;
        txtCalle.Text = null;
        txtCalleNumero.Text = null;
        txtPiso.Text = null;
        txtDepto.Text = null;
        txtTelefono.Text = null;

    }
    protected void gvEmpleados_SelectedIndexChanged(object sender, EventArgs e)
    {
        GridViewRow row = gvEmpleados.SelectedRow;

        limpiarCargaEmpleado();
        //Legajo
        txtLegajo.Text = row.Cells[1].Text;
        //Apellido
        txtApellido.Text = row.Cells[2].Text;
        //Nombre
        txtNombre.Text = row.Cells[3].Text;
        //Descripcion del Tipo de Documento
        DropDownList ltd = (row.FindControl("ddlTiposDocumento") as DropDownList);
        lstTipoDocumento.SelectedValue = ltd.SelectedValue;
        //Numero de documento
        txtNumeroDocumento.Text = row.Cells[5].Text;
        //Calle
        txtCalle.Text = row.Cells[7].Text;
        //Calle numero
        txtCalleNumero.Text = row.Cells[8].Text;
        //Piso
        txtPiso.Text = row.Cells[9].Text;
        //Depto
        txtDepto.Text = row.Cells[10].Text;
        //Telefono
        txtTelefono.Text = row.Cells[11].Text;
        //Email
        //txtEmail.Text = row.Cells[12].Text;

        DropDownList lc = (row.FindControl("ddlCargo") as DropDownList);
        lstCargos.SelectedValue = lc.SelectedValue;

        txtApellido.Focus();
    }
    protected void cmdCancelar_Click(object sender, EventArgs e)
    {
        limpiarCargaEmpleado();
    }
    protected void cmdGrabar_Click(object sender, EventArgs e)
    {
        Empleado emp = new Empleado();
        TipoDocumento tDoc = new TipoDocumento();
        Cargo cargo = new Cargo();

        tDoc.Id = int.Parse(lstTipoDocumento.SelectedValue);
        tDoc.Nombre = lstTipoDocumento.SelectedItem.Text;

        cargo.Id = int.Parse(lstCargos.SelectedValue);
        cargo.Nombre = lstCargos.SelectedItem.Text;


        if (txtLegajo.Text != "")
        { emp.Legajo = int.Parse(txtLegajo.Text); }
        emp.Apellido = txtApellido.Text;
        emp.Nombre = txtNombre.Text;
        emp.TipoDocumento = tDoc;
        emp.NumeroDocumento = int.Parse(txtNumeroDocumento.Text);
        emp.Calle = txtCalle.Text;
        emp.CalleNumero = int.Parse(txtCalleNumero.Text);
        emp.Piso = txtPiso.Text;
        emp.Depto = txtDepto.Text;
        emp.Telefono = txtTelefono.Text;
        // emp.Email = txtEmail.Text;
        emp.Cargo = cargo;

        if (txtLegajo.Text == "")
        {
            DAOEmpleado.insertarEmpleado(emp, Database.connectionString());
        }
        else
        {
            DAOEmpleado.actualizaEmpleado(emp, Database.connectionString());
        }

        limpiarCargaEmpleado();
        gvEmpleados.DataSource = DAOEmpleado.queryEmpleados(Database.connectionString(), txtFiltroLegajo.Text, txtFiltroApellido.Text,
                Session["OrdenGrilla"].ToString());
        gvEmpleados.DataBind();

    }
    protected void gvEmpleados_PageIndexChanged(object sender, EventArgs e)
    {
        GridViewPageEventArgs evt = (GridViewPageEventArgs)e;
        gvEmpleados.PageIndex = evt.NewPageIndex;
        gvEmpleados.DataSource = DAOEmpleado.queryEmpleados(Database.connectionString(), txtFiltroLegajo.Text, txtFiltroApellido.Text,
            Session["OrdenGrilla"].ToString());
        gvEmpleados.DataBind();
    }


    protected void gvEmpleados_Sorting(object sender, GridViewSortEventArgs e)
    {
        if (Session["OrderField"] == null)
        {
            Session["OrderField"] = e.SortExpression;
            Session["Order"] = "DESC";
        }
        string strOrder;
        if (Session["OrderField"].ToString() == e.SortExpression.ToString())
        {
            Session["OrderField"] = e.SortExpression;
            strOrder = e.SortExpression;
            if (Session["Order"].ToString() == "ASC")
            {
                strOrder = strOrder + " DESC";
                Session["Order"] = "DESC";
            }
            else
            {
                strOrder = strOrder + " ASC";
                Session["Order"] = "ASC";
            }
        }
        else
        {
            strOrder = e.SortExpression + " ASC";
            Session["OrderField"] = e.SortExpression;
            Session["Order"] = "ASC";
        }
        Session["OrdenGrilla"] = strOrder;
        gvEmpleados.DataSource = DAOEmpleado.queryEmpleados(Database.connectionString(), txtFiltroLegajo.Text, txtFiltroApellido.Text,
           Session["OrdenGrilla"].ToString());
        gvEmpleados.DataBind();
    }

    protected void cmdEliminar_Click(object sender, EventArgs e)
    {
        if (txtLegajo.Text != String.Empty)
        {
            Empleado emp = new Empleado();
            emp.Legajo = int.Parse(txtLegajo.Text);
            DAOEmpleado.borrarEmpleado(emp, ConfigurationManager.ConnectionStrings["Libreria"].ConnectionString);
            limpiarCargaEmpleado();
        }
    }
    protected void cmdNuevo_Click(object sender, EventArgs e)
    {
        limpiarCargaEmpleado();
        txtApellido.Focus();
    }

    protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            //Find the DropDownList in the Row
            DropDownList ddlTiposDocumento = (e.Row.FindControl("ddlTiposDocumento") as DropDownList);

            ddlTiposDocumento.DataSource = DAOTipoDocumento.queryTiposDocumentos(ConfigurationManager.ConnectionStrings["Libreria"].ConnectionString);
            ddlTiposDocumento.DataTextField = "nombre";
            ddlTiposDocumento.DataValueField = "idTipoDocumento";
            ddlTiposDocumento.DataBind();

            //Add Default Item in the DropDownList
            ddlTiposDocumento.Items.Insert(0, new ListItem("Please select"));

            //Select the tipo de documento of empleado in DropDownList
            string tipoDocumento = (e.Row.FindControl("lblTipoDocumento") as Label).Text;
            ddlTiposDocumento.Items.FindByValue(tipoDocumento).Selected = true;

            //Find the DropDownList in the Row
            DropDownList ddlCargos = (e.Row.FindControl("ddlCargo") as DropDownList);

            ddlCargos.DataSource = DAOCargo.queryCargos(ConfigurationManager.ConnectionStrings["Libreria"].ConnectionString);
            ddlCargos.DataTextField = "nombre";
            ddlCargos.DataValueField = "idCargo";
            ddlCargos.DataBind();

            //Add Default Item in the DropDownList
            ddlCargos.Items.Insert(0, new ListItem("Please select"));

            //Select the tipo de documento of empleado in DropDownList
            string cargo = (e.Row.FindControl("lblCargo") as Label).Text;
            ddlCargos.Items.FindByValue(cargo).Selected = true;
        }
    }
    protected void cmdConsultar_Click(object sender, EventArgs e)
    {
        gvEmpleados.DataSource = DAOEmpleado.queryEmpleados(Database.connectionString(), txtFiltroLegajo.Text, txtFiltroApellido.Text,
Session["OrdenGrilla"].ToString());
        gvEmpleados.DataBind();
    }
}